/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Biblioteca;

import java.util.Date;
import java.util.List;

/**
 * Esta clase en java define las caracteristicas y atributos para
 * un libro en la biblioteca.
 *
 * @author sebaxtian
 * Archivo: Libro.java
 * @version 1.0
 * Fecha: sáb abr 10 23:26:46 COT 2010
 */


public class Libro {

    //Atributos de clase
    private Long isbn;
    private int codigoEditorial;
    private String titulo;
    private Date anoPublicacion;
    private String idioma;
    private boolean activo;
    private int cantidadBusquedas;
    private List<Autor> listaAutores;
    private List<Area> listaAreas;
    private List<Ejemplar> listaEjemplares;
    private List<PalabraClave> listaPalabrasClave;
    private Editorial editorial;

    /**
     * Crea un libro con atributos nulos.
     */
    public Libro() {
        this.isbn = -1L;
        this.codigoEditorial = -1;
        this.titulo = null;
        this.anoPublicacion = null;
        this.idioma = null;
        this.activo = false;
        this.cantidadBusquedas = -1;
        this.listaAutores = null;
        this.listaAreas = null;
        this.listaEjemplares = null;
        this.listaPalabrasClave = null;
        this.editorial = null;
    }

    /**
     * Crea un libro con atributos defiminidos como argumentos.
     *
     * @param isbn
     * @param codigoEditorial
     * @param titulo
     * @param anoPublicacion
     * @param idioma
     * @param activo
     * @param cantidadBusquedas
     */
    public Libro(Long isbn, int codigoEditorial, String titulo, Date anoPublicacion, String idioma, boolean activo, int cantidadBusquedas) {
        this.isbn = isbn;
        this.codigoEditorial = codigoEditorial;
        this.titulo = titulo;
        this.anoPublicacion = anoPublicacion;
        this.idioma = idioma;
        this.activo = activo;
        this.cantidadBusquedas = cantidadBusquedas;
        this.listaAutores = null;
        this.listaAreas = null;
        this.listaEjemplares = null;
        this.listaPalabrasClave = null;
        this.editorial = null;
    }

    /**
     * Obtiene el isbn.
     *
     * @return isbn
     */
    public Long getIsbn() {
        return isbn;
    }

    /**
     * Cambia el isbn.
     *
     * @param isbn
     */
    public void setIsbn(Long isbn) {
        this.isbn = isbn;
    }

    /**
     * Obtiene el codigo de editorial al que pertenece el libro.
     *
     * @return codigoEditorial
     */
    public int getCodigoEditorial() {
        return codigoEditorial;
    }

    /**
     * Cambia el codigo de editorial al que pertenece el libro.
     *
     * @param codigoEditorial
     */
    public void setCodigoEditorial(int codigoEditorial) {
        this.codigoEditorial = codigoEditorial;
    }

    /**
     * Obtiene el titulo.
     *
     * @return titulo
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * Cambia el titulo.
     *
     * @param titulo
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * Obtiene el año de publicacion.
     *
     * @return anoPublicacion
     */
    public Date getAnoPublicacion() {
        return anoPublicacion;
    }

    /**
     * Cambia el año de publicacion.
     *
     * @param anoPublicacion
     */
    public void setAnoPublicacion(Date anoPublicacion) {
        this.anoPublicacion = anoPublicacion;
    }

    /**
     * Obtiene el idioma.
     *
     * @return idioma
     */
    public String getIdioma() {
        return idioma;
    }

    /**
     * Cambia el idioma.
     *
     * @param idioma
     */
    public void setIdioma(String idioma) {
        this.idioma = idioma;
    }

    /**
     * Obtiene el estado de activo de un libro.
     *
     * @return activo
     */
    public boolean getActivo() {
        return activo;
    }

    /**
     * Cambia el estado de activo de un libro.
     *
     * @param activo
     */
    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    /**
     * Obtiene la cantidad de busquedas que han realizado del libro.
     * 
     * @return cantidadBusquedas
     */
    public int getCantidadBusquedas() {
        return cantidadBusquedas;
    }

    /**
     * Cambia la cantidad de busquedas que han realizado del libro.
     * 
     * @param cantidadBusquedas
     */
    public void setCantidadBusquedas(int cantidadBusquedas) {
        this.cantidadBusquedas = cantidadBusquedas;
    }

    /**
     * Obtiene la lista de autores.
     *
     * @return listaAutores
     */
    public List<Autor> getListaAutores() {
        return listaAutores;
    }

    /**
     * Cambia la lista de autores.
     *
     * @param listaAutores
     */
    public void setListaAutores(List<Autor> listaAutores) {
        this.listaAutores = listaAutores;
    }

    /**
     * Obtiene la lista de areas de conocimiento.
     *
     * @return listaAreas
     */
    public List<Area> getListaAreas() {
        return listaAreas;
    }

    /**
     * Cambia la lista de areas de conocimiento.
     *
     * @param listaAreas
     */
    public void setListaAreas(List<Area> listaAreas) {
        this.listaAreas = listaAreas;
    }

    /**
     * Obtiene la lista de ejemplares.
     *
     * @return listaEjemplares
     */
    public List<Ejemplar> getListaEjemplares() {
        return listaEjemplares;
    }

    /**
     * Cambia la lista de ejemplares.
     *
     * @param listaEjemplares
     */
    public void setListaEjemplares(List<Ejemplar> listaEjemplares) {
        this.listaEjemplares = listaEjemplares;
    }

    /**
     * Obtiene la lista de palabras clave.
     *
     * @return listaPalabrasClave
     */
    public List<PalabraClave> getListaPalabrasClave() {
        return listaPalabrasClave;
    }

    /**
     * Cambia el lista de palabras clave.
     * 
     * @param listaPalabrasClave
     */
    public void setListaPalabrasClave(List<PalabraClave> listaPalabrasClave) {
        this.listaPalabrasClave = listaPalabrasClave;
    }

    /**
     * Obtiene la editorial.
     *
     * @return editorial
     */
    public Editorial getEditorial() {
        return editorial;
    }

    /**
     * Cambia la editorial.
     *
     * @param editorial
     */
    public void setEditorial(Editorial editorial) {
        this.editorial = editorial;
    }

    
}
